﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MMSA.Services.SharedServices;
using System.Data;
using SmartProcess.Core.Commons.Tracing;

namespace MMSA.Services.Services
{
    public class DailyFrequencyManagementService
        :IDataManagementService
    {
        private TracingService tracing = new TracingService("MMSA.Services");
        string traceServicio = string.Empty;
        public void MassiveProductUpload(string fileName, string fileExtension)
        {
            try
            {
                var dataTable = new DataTable("RUT_FRECUENCIA_DIARIA");

                traceServicio = "Antes de cargar desde archivo excel: " + fileName;

                dataTable.GetDataFromExcelSpreadsheet(fileName, fileExtension);
                MMSA.Entities.DailyFrequency.RUT_FRECUENCIA_DIARIADataTable dailyFrequency = new Entities.DailyFrequency.RUT_FRECUENCIA_DIARIADataTable();

                traceServicio = "Antes de recorrer las columnas de lugares";

                foreach (DataRow item in dataTable.Rows)
                {
                    var row = dailyFrequency.NewRUT_FRECUENCIA_DIARIARow();
                    for (int i = 0; i < dataTable.Columns.Count; i++)
                    {
                        traceServicio = "Se cayo al leer la Columna: " + dataTable.Columns[i].ColumnName + " ,revise si el archivo subido pertenece al formato correcto.";

                        row[dataTable.Columns[i].ColumnName] = Convert.ChangeType(item[dataTable.Columns[i].ColumnName], Type.GetType("System.String"));
                        //annualFrequency.Columns[dataTable.Columns[2].ColumnName].DataType);

                    }
                    dailyFrequency.AddRUT_FRECUENCIA_DIARIARow(row);
                }
                traceServicio = "Antes de generar el upsert de actualización e inserción.";
                dailyFrequency.Upsert("frd_id");
            }
            catch (Exception exception)
            {
                if (exception != null)
                    tracing.ErrorFormat("MMSA.Services.Services.DailyFrequencyManagementService ==> TRACE: {0}, ==> ERROR: {1}, ==> STACKTRACE: {2}", traceServicio, exception.Message, exception.StackTrace);
                throw;
            }
        }
    }
}
